package com.tjc.media.mapper;

import java.util.List;
import com.tjc.media.domain.Attachment;
import org.apache.ibatis.annotations.Param;

/**
 * 系统附件Mapper接口
 * 
 * @author 大根教会
 * @date 2025-09-23
 */
public interface AttachmentMapper 
{
    /**
     * 查询系统附件
     * 
     * @param id 系统附件主键
     * @return 系统附件
     */
    public Attachment selectAttachmentById(Long id);

    /**
     * 查询系统附件列表
     * 
     * @param attachment 系统附件
     * @return 系统附件集合
     */
    public List<Attachment> selectAttachmentList(Attachment attachment);

    /**
     * 查询附件路径是否重复
     *
     * @param fileKey fileKey
     * @param bucketName 存储桶名称
     * @return 路径重复记录数
     */
    int selectCountByFileKey(@Param("fileKey") String fileKey, @Param("bucketName") String bucketName, @Param("exceptBizId") Long exceptBizId);

    /**
     * 新增系统附件
     * 
     * @param attachment 系统附件
     * @return 结果
     */
    public int insertAttachment(Attachment attachment);

    /**
     * 修改系统附件
     * 
     * @param attachment 系统附件
     * @return 结果
     */
    public int updateAttachment(Attachment attachment);

    /**
     * 删除系统附件
     *
     * @param bizId bizId
     */
    int deleteBizId(@Param("bizType") Integer bizType, @Param("bizId") Long bizId);

    /**
     * 删除系统附件
     *
     * @param bizIds bizId
     */
    int deleteBizIds(@Param("bizTypes") List<Integer> bizTypes, @Param("bizIds") List<Long> bizIds);

    /**
     * 删除系统附件
     * 
     * @param id 系统附件主键
     * @return 结果
     */
    public int deleteAttachmentById(Long id);

    /**
     * 批量删除系统附件
     * 
     * @param ids 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteAttachmentByIds(Long[] ids);
}
